#!/bin/bash

# === 配置项 ===
LOG_DIR="/var/log/app"   # 需要清理的日志目录
ARCHIVE_DIR="/backup"    # 归档日志存放目录
RETENTION_DAYS=7         # 保留最近 N 天的日志

# 判断归档目录是否存在，如果不存在则创建
if [ ! -d "$ARCHIVE_DIR" ]; then
  mkdir -p "$ARCHIVE_DIR"
  echo "创建归档目录: $ARCHIVE_DIR"
else
  echo "归档目录已存在: $ARCHIVE_DIR"
fi

# 查找并归档过期日志
find "$LOG_DIR" -type f -name "*.log" -mtime +$RETENTION_DAYS -exec bash -c '
  for file; do
    archive_name="$ARCHIVE_DIR/$(basename "$file" .log)_$(date -r "$file" +"%Y%m%d%H").log.gz"
    gzip -c "$file" > "$archive_name" && rm -f "$file"
  done
' bash {} +

# 日志输出
echo "日志清理完成: $(date)"